package top.mschen.blog.common.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import org.springframework.lang.Nullable;

public class DataSourceRoutingDataSource extends AbstractRoutingDataSource {

   private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceRoutingDataSource.class);

    /*

    * 代码中的determineCurrentLookupKey方法取得一个字符串，

    * 该字符串将与配置文件中的相应字符串进行匹配以定位数据源，配置文件，即applicationContext.xml文件中需要要如下代码：(non-Javadoc)

    * @see org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource#determineCurrentLookupKey()

    */
    @Nullable
    @Override
    protected Object determineCurrentLookupKey() {

       /*
        * DynamicDataSourceContextHolder代码中使用setDataSourceType
        * 设置当前的数据源，在路由类中使用getDataSourceKey进行获取，
        *  交给AbstractRoutingDataSource进行注入使用。
        *  获取数据源key
        */
        LOGGER.info("Current DataSource is [{}]", DynamicDataSourceContextHolder.getDataSourceKey());
        return DynamicDataSourceContextHolder.getDataSourceKey();
    }
}
